import matplotlib.pyplot as plt
import numpy as np

# 设置支持 Unicode 的字体
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei','DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False

def demonstrate_continuous_operations():
    x = np.linspace(-2, 2, 1000)
    
    # 定义两个连续函数
    f = lambda x: np.sin(x)  # 连续函数
    g = lambda x: x**2 + 1   # 连续函数
    
    # 计算各种运算结果
    f_plus_g = f(x) + g(x)   # 和函数
    f_minus_g = f(x) - g(x)  # 差函数
    f_times_g = f(x) * g(x)  # 积函数
    f_div_g = f(x) / g(x)    # 商函数（g(x) ≠ 0）
    
    fig, axes = plt.subplots(2, 3, figsize=(15, 10))
    
    # 原始函数
    axes[0,0].plot(x, f(x), 'b-', linewidth=2, label='f(x) = sin(x)')
    axes[0,0].set_title('连续函数 f(x)')
    axes[0,0].grid(True)
    axes[0,0].legend()
    
    axes[0,1].plot(x, g(x), 'r-', linewidth=2, label='g(x) = x² + 1')
    axes[0,1].set_title('连续函数 g(x)')
    axes[0,1].grid(True)
    axes[0,1].legend()
    
    # 四则运算结果
    axes[0,2].plot(x, f_plus_g, 'g-', linewidth=2, label='f(x) + g(x)')
    axes[0,2].set_title('和函数: f(x) + g(x)')
    axes[0,2].grid(True)
    axes[0,2].legend()
    
    axes[1,0].plot(x, f_minus_g, 'purple', linewidth=2, label='f(x) - g(x)')
    axes[1,0].set_title('差函数: f(x) - g(x)')
    axes[1,0].grid(True)
    axes[1,0].legend()
    
    axes[1,1].plot(x, f_times_g, 'orange', linewidth=2, label='f(x) × g(x)')
    axes[1,1].set_title('积函数: f(x) × g(x)')
    axes[1,1].grid(True)
    axes[1,1].legend()
    
    # 商函数（注意去除g(x)=0的点）
    mask = g(x) != 0
    axes[1,2].plot(x[mask], f_div_g[mask], 'brown', linewidth=2, label='f(x) / g(x)')
    axes[1,2].set_title('商函数: f(x) / g(x)')
    axes[1,2].grid(True)
    axes[1,2].legend()
    
    plt.tight_layout()
    plt.show()
    
    # 验证在x=0处的连续性
    x0 = 0
    print(f"在 x = {x0} 处:")
    print(f"f({x0}) = {f(x0):.6f}, g({x0}) = {g(x0):.6f}")
    print(f"f+g({x0}) = {f(x0) + g(x0):.6f}")
    print(f"f-g({x0}) = {f(x0) - g(x0):.6f}")
    print(f"f×g({x0}) = {f(x0) * g(x0):.6f}")
    print(f"f/g({x0}) = {f(x0) / g(x0):.6f}")

demonstrate_continuous_operations()